package com.springsummer.information.green.webmvc;

import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
import java.util.logging.Logger;

public class JstlViewImpl implements View {

    private final static Logger logger=Logger.getLogger(JstlViewImpl.class.getName());

    public static final String DEFAULT_CONTENT_TYPE = "text/html;charset=ISO-8859-1";
    private String contentType = DEFAULT_CONTENT_TYPE;

    private String pathUrl;

    @Override
    public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
        for (Map.Entry<String, ?> entry : model.entrySet()) {
            request.setAttribute(entry.getKey(), entry.getValue());
        }
        String htmlPath = getPath();
        if(htmlPath.contains("redirect")){
            String urlTemp=htmlPath.replace("redirect:","");
            logger.info("sendRedirect url:"+urlTemp);
            response.sendRedirect(urlTemp);
        }else{
            logger.info("forward url:"+htmlPath);
            RequestDispatcher requestDispatcher = request.getRequestDispatcher(htmlPath);
            requestDispatcher.forward(request, response);
        }

    }

    //在Java的Servlet中，使用request.getRequestDispatcher().forward(request, response)方法可以将请求从一个Servlet转发到另一个资源（例如JSP页面、另一个Servlet等），但不改变浏览器的URL。如果你想将请求转发到一个HTML文件（例如xx.html），你可以按照以下步骤操作：
    //
    //1. 确定HTML文件的位置
    //首先，确保你的HTML文件（例如xx.html）位于Web应用的正确目录下。通常，这些文件位于webapp目录下的某个子目录中，例如webapp/pages/xx.html。
    //
    //2. 使用RequestDispatcher转发到HTML文件
    //在你的Servlet中，你可以使用RequestDispatcher来转发请求到这个HTML文件。这里是如何做的：
    //
    //protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //    // 设置请求的属性（如果有的话）
    //    // request.setAttribute("attributeName", "attributeValue");
    //
    //    // 获取RequestDispatcher对象，指向HTML文件的路径
    //    String path = "/pages/xx.html"; // 确保路径正确
    //    RequestDispatcher dispatcher = request.getRequestDispatcher(path);
    //
    //    // 转发请求和响应对象
    //    dispatcher.forward(request, response);
    //}
    //3. 确保路径正确
    //在创建RequestDispatcher对象时，你需要提供相对于Web应用根目录的路径。如果你的HTML文件位于webapp/pages/xx.html，则路径应该是/pages/xx.html。注意路径以斜杠(/)开头，这表示相对于Web应用的根目录。
    //
    //4. 测试和调试
    //确保你的HTML文件路径正确无误，并且Web服务器（如Tomcat）已经正确配置。部署你的应用并访问Servlet，看看是否成功跳转到了xx.html页面。
    //
    //5. 使用相对路径或绝对路径
    //如果你希望使用相对路径，例如相对于当前Servlet的路径，你可以这样做：

    @Override
    public String getContentType() {
        return this.contentType;
    }

    @Override
    public void setContentType(String contentType) {
        this.contentType = contentType;
    }

    public String getPathUrl() {
        return pathUrl;
    }

    public void setPathUrl(String pathUrl) {
        this.pathUrl = pathUrl;
    }

    @Override
    public String getPath() {
        return getPathUrl();
    }

    @Override
    public void setPath(String url) {
        this.setPathUrl(url);
    }

}
